public class Test {
    /**
     * 滑动窗口算法，解决连续子数组问题
     * */

    public int minSubArrayLen(int target, int[] nums) {
        //长度最小子数组
        int n = nums.length,len = Integer.MAX_VALUE;
        int sum = 0;
        for(int left=0,right=0;right<n;right++){
            sum += nums[right];//进窗口
            while(sum>=target){//判断
                len = Math.min(len,right-left+1);//更新结果
                sum -= nums[left];//出窗口(窗口右移动一步，减去最前面的值即可)
                left++;
            }
        }
        return len==Integer.MAX_VALUE?0:len;
    }
    public static void main(String[] args) {
        int[] nums={2,3,1,2,4,3};
        System.out.println(new Test().minSubArrayLen(7,nums));
    }
}
